import request from './request'
import {
    buildQueryString
} from "../utils/url"

/**
 * 查询用户的浏览历史记录
 *
 * 该函数通过发起 HTTP GET 请求到后端的 "/history" 接口，
 * 获取当前用户的浏览历史数据，通常包括浏览过的内容ID、时间戳等信息
 *
 * @returns {Promise} 返回一个 Promise 对象
 *                    成功时 resolve 回调会接收后端返回的浏览历史数据
 *                    失败时 reject 回调会接收错误信息
 */
export const queryUserBrowseHistory = () => {
    return request.get(`/history`)
}

/**
 * 查询用户浏览历史的总数量
 * @description 发送GET请求到后端接口，获取用户浏览历史记录的总条数
 * @returns {Promise} 返回一个Promise对象，解析后为浏览历史的数量（数字类型）
 * @example
 * // 使用示例
 * queryCountOfUserBrowseHistory().then(count => {
 *   console.log('用户浏览历史总数：', count);
 * }).catch(error => {
 *   console.error('查询失败：', error);
 * });
 */
export const queryCountOfUserBrowseHistory = () => {
    // 发送GET请求到历史记录计数接口
    return request.get("/history/count")
}

/**
 * 删除用户的所有浏览历史记录
 * @description 发送DELETE请求到后端接口，删除当前用户的全部浏览历史数据
 * @returns {Promise} 返回一个Promise对象
 *                    - 成功时解析为后端返回的删除结果（通常包含删除成功的标识或数量）
 *                    - 失败时捕获到请求错误信息
 * @example
 * // 使用示例
 * deleteAllBrowseHistory()
 *   .then(result => {
 *     console.log('所有浏览历史删除成功：', result);
 *   })
 *   .catch(error => {
 *     console.error('删除浏览历史失败：', error);
 *   });
 */
export const deleteAllBrowseHistory = () => {
    // 发送DELETE请求到删除全部浏览历史的接口
    return request.delete("/history/all")
}

/**
 * 根据商品ID列表删除用户的浏览历史记录
 * @param {Array<number|string>} ids - 商品ID列表（必须为数组）
 * @returns {Promise} 返回请求Promise
 */
export const deleteBrowseHistoryByIds = (ids) => {
    // 1. 校验参数：确保ids是数组，避免map报错
    if (!Array.isArray(ids)) {
        throw new Error('参数必须是数组');
    }

    // 2. 处理空数组：可根据业务需求决定是报错还是不发送请求
    if (ids.length === 0) {
        console.warn('删除的ID列表为空');
        return Promise.resolve(); // 或抛出错误：throw new Error('ID列表不能为空')
    }

    // 3. 拼接参数并进行URL编码，避免特殊字符问题
    const params = ids.map(id => `ids=${encodeURIComponent(id)}`).join('&');

    // 4. 拼接URL（去掉冗余斜杠）
    return request.delete(`/history?${params}`);
};